package DigitalSignature;

import java.math.BigInteger;

public class RSA_Sign_Test {
    public static void main(String[] args) {
        primaryTest();
    }

    private static void primaryTest() {
        RSA_Sign rsaSign = new RSA_Sign();
        // String pStr = "8384770691199731090227901761369715679766458105128220592036873364412961378312508844718993092171307186077124445798049353269284692982195512524426286648356027";
        // String qStr = "12181018780270384245980882487763195755475121960663023641593208090932207734556605764818243649182313018177847426957507816306095263109288627131434655751222979";
        String nStr = "102135049257764615042078588005181805961847617924788520924614970166905740850252377792164156899761196828021256396735835844272953844045954140171199203152941953733292753140561165735333672566395754320988951863125115229868139990823128135019358359614902902066874352974805819176036025088817935594035047801625055544433";
        String eStr = "65537";
        String dStr = "66473417932476187344627006008407842157813880631764187733929336672401810736327035450920395324815204991110650019780739766873957814119293344139376700356830267136528754388684199957664206587604561484552338778247510929052310097742136001829518535632056741801490247649680438463755276345908312841043655459326456925849";

        // BigInteger p = new BigInteger(pStr);
        // BigInteger q = new BigInteger(qStr);
        BigInteger n = new BigInteger(nStr);
        BigInteger e = new BigInteger(eStr);
        BigInteger d = new BigInteger(dStr);

        String[] testStr = new String[]{"crypto", "基于RSA的数字签名基于RSA的数字签名基于RSA的数字签名基于RSA的数字签名基于RSA的数字签名"};
        boolean flag = true;

        for (String s : testStr) {
            BigInteger sign = rsaSign.sign(d, n, s.getBytes());
            flag = rsaSign.verify(e, n, sign, s.getBytes());
            if (!flag) {
                break;
            }
        }
        if (flag) {
            System.out.println("通过测试！");
        } else {
            System.out.println("未通过测试！");
        }


    }
}
